/**
 * 2009 David BY Chan$lifesting@gmail.com
 *
 * $Id$
 */
package com.lifesting.wfs.gd;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.util.FeatureMap;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Process Definition</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link com.lifesting.wfs.gd.ProcessDefinition#getStart <em>Start</em>}</li>
 *   <li>{@link com.lifesting.wfs.gd.ProcessDefinition#getGroup <em>Group</em>}</li>
 *   <li>{@link com.lifesting.wfs.gd.ProcessDefinition#getFork <em>Fork</em>}</li>
 *   <li>{@link com.lifesting.wfs.gd.ProcessDefinition#getJoin <em>Join</em>}</li>
 *   <li>{@link com.lifesting.wfs.gd.ProcessDefinition#getAuto <em>Auto</em>}</li>
 *   <li>{@link com.lifesting.wfs.gd.ProcessDefinition#getTaskRunner <em>Task Runner</em>}</li>
 *   <li>{@link com.lifesting.wfs.gd.ProcessDefinition#getEnd <em>End</em>}</li>
 * </ul>
 * </p>
 *
 * @see com.lifesting.wfs.gd.GdPackage#getProcessDefinition()
 * @model extendedMetaData="name='process-definition' kind='elementOnly'"
 * @generated
 */
public interface ProcessDefinition extends GraphElement {
	/**
	 * Returns the value of the '<em><b>Start</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Start</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Start</em>' containment reference.
	 * @see #setStart(Start)
	 * @see com.lifesting.wfs.gd.GdPackage#getProcessDefinition_Start()
	 * @model containment="true" required="true"
	 *        extendedMetaData="kind='element' name='start' namespace='##targetNamespace'"
	 * @generated
	 */
	Start getStart();

	/**
	 * Sets the value of the '{@link com.lifesting.wfs.gd.ProcessDefinition#getStart <em>Start</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Start</em>' containment reference.
	 * @see #getStart()
	 * @generated
	 */
	void setStart(Start value);

	/**
	 * Returns the value of the '<em><b>Group</b></em>' attribute list.
	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Group</em>' attribute list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Group</em>' attribute list.
	 * @see com.lifesting.wfs.gd.GdPackage#getProcessDefinition_Group()
	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
	 *        extendedMetaData="kind='group' name='group:2'"
	 * @generated
	 */
	FeatureMap getGroup();

	/**
	 * Returns the value of the '<em><b>Fork</b></em>' containment reference list.
	 * The list contents are of type {@link com.lifesting.wfs.gd.Fork}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Fork</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Fork</em>' containment reference list.
	 * @see com.lifesting.wfs.gd.GdPackage#getProcessDefinition_Fork()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='fork' namespace='##targetNamespace' group='#group:2'"
	 * @generated
	 */
	EList<Fork> getFork();

	/**
	 * Returns the value of the '<em><b>Join</b></em>' containment reference list.
	 * The list contents are of type {@link com.lifesting.wfs.gd.Join}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Join</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Join</em>' containment reference list.
	 * @see com.lifesting.wfs.gd.GdPackage#getProcessDefinition_Join()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='join' namespace='##targetNamespace' group='#group:2'"
	 * @generated
	 */
	EList<Join> getJoin();

	/**
	 * Returns the value of the '<em><b>Auto</b></em>' containment reference list.
	 * The list contents are of type {@link com.lifesting.wfs.gd.Auto}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Auto</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Auto</em>' containment reference list.
	 * @see com.lifesting.wfs.gd.GdPackage#getProcessDefinition_Auto()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='auto' namespace='##targetNamespace' group='#group:2'"
	 * @generated
	 */
	EList<Auto> getAuto();

	/**
	 * Returns the value of the '<em><b>Task Runner</b></em>' containment reference list.
	 * The list contents are of type {@link com.lifesting.wfs.gd.TaskRunner}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Task Runner</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Task Runner</em>' containment reference list.
	 * @see com.lifesting.wfs.gd.GdPackage#getProcessDefinition_TaskRunner()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='task-runner' namespace='##targetNamespace' group='#group:2'"
	 * @generated
	 */
	EList<TaskRunner> getTaskRunner();

	/**
	 * Returns the value of the '<em><b>End</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>End</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>End</em>' containment reference.
	 * @see #setEnd(End)
	 * @see com.lifesting.wfs.gd.GdPackage#getProcessDefinition_End()
	 * @model containment="true" required="true"
	 *        extendedMetaData="kind='element' name='end' namespace='##targetNamespace'"
	 * @generated
	 */
	End getEnd();

	/**
	 * Sets the value of the '{@link com.lifesting.wfs.gd.ProcessDefinition#getEnd <em>End</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>End</em>' containment reference.
	 * @see #getEnd()
	 * @generated
	 */
	void setEnd(End value);

} // ProcessDefinition
